\begin{Exercise}[title={map 函数},difficulty=1]
\label{ex:map function}
\func{map()} 函数是一个接受一个函数和一个列表作为参数的函数。
函数应用于列表中的每个元素，而一个新的包含有计算结果的列表被返回。
因此：
$$ \mathrm{map}(f(), (a_1,a_2,\ldots,a_{n-1},a_n)) =  (f(a_1), f(a_2),\ldots,f(a_{n-1}), f(a_n)) $$
\Question \label{ex:map function q1} 编写~Go 中的简单的~\func{map()} 函数。
它能工作于操作整数的函数就可以了。
\Question \label{ex:map function q2} 扩展代码使其工作于字符串列表。

\end{Exercise}

\begin{Answer}

\Question 
\begin{lstlisting}[caption=Map 函数]
func Map(f func(int) int, l []int) []int {
        j := make([]int, len(l))
        for k, v := range l {
                j[k] = f(v)
        }
        return j
}

func main() {
        m := []int{1, 3, 4}
        f := func(i int) int {
                return i * i
        }
        fmt.Printf("%v", (Map(f, m)))
}
\end{lstlisting}

\Question 字符串问题的答案
\end{Answer}
